/**
 * <H2><Font color="green">
 * Tastatureingaben in "einfachen" Befehlen kapseln
 * </H2></Font>
 * @author R. Tusche
 * @author H. Freye
 * @version 2.02<BR> 
 */
public class MyIO {
  /**
   * Eingabestrom vom Standardeingabeger�t: Tastatur
   */
  protected static java.io.DataInputStream in=null;
  /**
   *
   * liest Tastatureingabe f�r die "read"-Metoden
   * @return Zeichenkette von Tastatur (alles bis [Enter]) 
   * <BR>
   * gibt vorher ein ">" auf der Konsole aus
   * <BR> 
   **/
  protected static String open() {  
    String line="";
    try {   
        in=new java.io.DataInputStream( System.in );
        System.out.print( ">" );
        System.out.flush();
        line =in.readLine();      
      }
      catch (java.io.IOException e) {e.printStackTrace();}
      return line;
  }
  /**
   * liest Tastatureingabe f�r die "read"-Metoden
   * @param prompt "DOS-Prompt" (i.A. Eingabehinweis)
   * @return Zeichenkette von Tastatur (alles bis [Enter])
   * <BR>gibt vorher den "prompt" auf der Konsole aus
   */
  protected static String open(String prompt) { 
    String line="";
    try {   
      in=new java.io.DataInputStream( System.in );
      System.out.print( prompt );
      System.out.flush();
      line =in.readLine();      
    }
    catch (java.io.IOException e) {e.printStackTrace();}
    return line;
  }
  /**
   * Beendet den Eingabestrom
   *
   */
  protected static void close() { 
    try {   
        in.close();
      } 
      catch (java.io.IOException e) {e.printStackTrace();}    
  }
  /**
   * liest String
   * @param prompt "Dos-Prompt" bei der Eingabe
   * @return String von Tastatur eingelesen
   */
  public static String readString(String prompt) {
    return open(prompt);
  }
  /**
   * liest String
   * @return String von Tastatur eingelesen
   */
  public static String readString() {
    return open();
  }
    public static double readdouble() {
    Double test=new Double(open());
    return test.doubleValue();        
  }
  /**
  * liest double-Wert
  * @return double �ber Tastatur eingelesen - oder 0.0
  * 
  * <BR>Bei fehlerhafter Eingabe wird auf der Konsole eine Fehlermeldung ausgegeben 
  */
  public static double readDouble() {
    double wert=0.0;
    try {
      wert=new Double(open()).doubleValue() ; 
    }catch(Exception e){
      System.out.println("\n   ----\n Eingabe ist nicht 'double'\n   ----\n "); 
    }     
    return wert;        
  } 
  /**
  * liest double-Wert
  * @param prompt "Dos-Prompt" bei der Eingabe
  * @return double �ber Tastatur eingelesen - oder 0.0
  * <BR>
  * Bei fehlerhafter Eingabe wird auf der Konsole eine Fehlermeldung ausgegeben 
  */
  public static double readDouble(String prompt) {
    double wert=0.0;
    try {
      wert=new Double(open(prompt)).doubleValue() ; 
    }catch(Exception e){
      System.out.println("\n   ----\n Eingabe ist nicht 'double'\n   ----\n "); 
    }     
    return wert;        
  } 
  /**
  * liest int-Wert
  * @param prompt "Dos-Prompt" bei der Eingabe
  * @return int �ber Tastatur eingelesen - oder 0
  * <BR>
  * Bei fehlerhafter Eingabe wird auf der Konsole eine Fehlermeldung ausgegeben 
  */
  public static int readInt(String prompt) {
    int wert=0;
    try {
      wert=new Integer(open(prompt)).intValue() ; 
    }catch(Exception e){
      System.out.println("\n   ----\n Eingabe ist nicht 'int'\n   ----\n ");  
    }     
    return wert;        
  } 
  /**
  * liest int-Wert
  * @return int �ber Tastatur eingelesen - oder 0
  * <BR>
  * Bei fehlerhafter Eingabe wird auf der Konsole eine Fehlermeldung ausgegeben 
  */
  public static int readInt() {
    int wert=0;
    try {
      wert=new Integer(open()).intValue() ; 
    }catch(Exception e){
      System.out.println("\n   ----\n Eingabe ist nicht 'int'\n   ----\n ");  
    }     
    return wert;        
  }   
    public static int readint() {
      Integer test=new Integer(open());
      return test.intValue();            
  }
  public static char readchar() { 
    String line =open();    
    return line.charAt(0);          
  }    
  /**
  *  liest Zeichen (char)
  * @return char �ber Tastatur eingelesen
  * <BR> erstes Zeichen - die anderen werden ignoriert 
  *  <BR><Font color="red"> Problem, wenn gleich [Enter] gedr�ckt wird,
  * denn es gibt zwar "" aber nicht '' !!!!</Font>
  */ 
  public static char readChar() { 
    String line =open();    
    try{
      return line.charAt(0);  
    }catch(StringIndexOutOfBoundsException e){
      System.out.println("\n --- \nFehler: Es gibt keinen Leer-Character ''! Setze ' '(Leerzeichen #32)\n --- \n");
    }
    return ' ';          
  }    
  /**
   * liest Zeichen (char) 
   * @param prompt "Dos-Prompt" bei der Eingabe
   * @return char von der Tastatur eingelesen
  * <BR> erstes Zeichen - die anderen werden ignoriert 
  *  <BR><Font color="red"> Problem, wenn gleich [Enter] gedr�ckt wird,
  * denn es gibt zwar "" aber nicht '' !!!!</Font>
  */
  public static char readChar(String prompt) {  
    String line =open(prompt);    
    try{
      return line.charAt(0);  
    }catch(StringIndexOutOfBoundsException e){
      System.out.println("\n --- \nFehler: Es gibt keinen Leer-Character ''! Setze ' '(Leerzeichen #32)\n --- \n");
    }
    return ' ';          
  }
  /**
   * liest Wahrheitswert
   * @param prompt "Dos-Prompt" bei der Eingabe
   * @return boolean
   * <BR>
   * Als true wird akzeptiert: "true", "True", "wahr", "Wahr" und "1" -
   * nat�rlich ohne >"< eingeben
   */    
  public static boolean readBoolean(String prompt) {  
    String line =open(prompt);
    if (line.equals("true")||line.equals("True")||
      line.equals("j")||line.equals("J")||line.equals("wahr")||
      line.equals("Wahr")||line.equals("1")){
        return true;
    }
    return false;          
  }    
  /**
   * liest Wahrheitswert 
   * @return boolean
   * <BR><Font color="green">
   * Als true wird akzeptiert: "true", "True", "wahr", "Wahr" und "1" -
   * nat�rlich ohne &gt;"&lt; eingeben</Font> 
   * 
   */    
  public static boolean readBoolean() { 
    String prompt = "\nAls true wird akzeptiert: true, True, wahr, Wahr und 1 - jede andere Eingabe gilt als false";
    String line =open();
    if (line.equals("true")||line.equals("True")||
      line.equals("j")||line.equals("J")||line.equals("wahr")||
      line.equals("Wahr")||line.equals("1")){
        return true;
    }
    return false;          
  }    
  /**
  * Bildschirminhalt durch Leerzeile <I>"rausschieben"</I>
  */
  public static void cls() {   
      for (int i=0;i<27;i++){
      System.out.println(); 
      }           
   }    
}
